/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.servlet;

import com.bean.*;
import com.dao.*;
import com.Utils.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.google.gson.Gson;
import com.mail.Mail;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.tomcat.util.http.fileupload.FileUtils;

/**
 *
 * @author Gonzalo
 */
public class SVentas extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            String accionStr = request.getParameter("accion") == null ? "20" : request.getParameter("accion");
            int accion = Integer.parseInt(accionStr);
            BOEmpleado bEmpleado = null;
            BOSesion bSesion = null;
            BOCliente bCliente = null;
            BOProducto bProducto = null;
            BOIncidencias bIncidencias = null;
            DAOProducto dProducto = new DAOProducto();
            DAOInsumo daoinsumo = new DAOInsumo();
            DAORegistro dregistro = new DAORegistro();
            BOGasto bgasto = null;
            Mail m = new Mail();

            DAOTransacciones dtransacciones = new DAOTransacciones();
            DAOSesion dSesion = new DAOSesion();
            ArrayList<BOEmpleado> listaEmpleado = new ArrayList<BOEmpleado>();
            ArrayList<BOProducto> listaProducto = new ArrayList<BOProducto>();
            ArrayList<BOCuarto> listacuartos = new ArrayList<BOCuarto>();
            ArrayList<BOCliente> listaclientes = new ArrayList<BOCliente>();
            ArrayList<BOInsumo> listaInsumo = new ArrayList<BOInsumo>();
            ArrayList<BOTotalCuarto> listatotalcuarto = new ArrayList<BOTotalCuarto>();
            ArrayList<BORepVentaXSesion> listaRepVentaXsesion = new ArrayList<BORepVentaXSesion>();
            ArrayList<BORepVentaXSesionHora> listaRepVentaXsesionHora = new ArrayList<BORepVentaXSesionHora>();
            ArrayList<BORepCompraXSesion> listarepcompraproducto = new ArrayList<BORepCompraXSesion>();
            ArrayList<BOGastosInfraXsesion> listarepgastosinfra = new ArrayList<BOGastosInfraXsesion>();
            ArrayList<BORepEtregaInsumoXsesion> listarepentregainsumo = new ArrayList<BORepEtregaInsumoXsesion>();
            ArrayList<BORepCompraInsumoXsesion> listarepcomprainsumo = new ArrayList<BORepCompraInsumoXsesion>();
            ArrayList<BORepCuartosXSesion> repcuartoxsesion = new ArrayList<BORepCuartosXSesion>();
            ArrayList<String> datos = new ArrayList<String>();
            ArrayList<BOEvento> repeventosxsesion = new ArrayList<BOEvento>();
            ArrayList<Integer> tmpp3 = new ArrayList<Integer>();
            ArrayList<BOUltimaGanancia> buglist = new ArrayList<BOUltimaGanancia>();
            ArrayList<BOGasto> listaGastos = new ArrayList<BOGasto>();

            AlquilerHab alquilerHab = new AlquilerHab();

            listacuartos = null;
            listaProducto = null;
            listaclientes = null;
            listaEmpleado = null;
            listaInsumo = null;
            listatotalcuarto = null;

            DAOCuarto dCuarto = new DAOCuarto();
            DAOCliente dCliente = new DAOCliente();
            DAOLogin dLogin = new DAOLogin();
            DAOEmpleado dEmpleado = new DAOEmpleado();
            DAOInsumo dInsumo = new DAOInsumo();
            DAOReporte dreporte = new DAOReporte();
            DAOEventos deventos = new DAOEventos();
            DAOGastos dgastos = new DAOGastos();

            GenerateCSV gencsv = new GenerateCSV();
            int cont = 0;

            String pagina = "";
            HttpSession session1 = request.getSession(true);
            bEmpleado = (BOEmpleado) session1.getAttribute("usuario");
            bSesion = (BOSesion) session1.getAttribute("sesion");

            if (bEmpleado.getNombre() == null) {

                response.sendRedirect("index.jsp");
            }


            switch (accion) {
                case 0: // Caso en el cual se regresará a la ventana de inicio de la aplicación.

                    pagina = "/index.jsp";
                    break;

                case 1:// Se redirecciona a el menu principal.

                    datos = dtransacciones.ExtraerSencilloActualizado();
                    double santerior = Double.parseDouble(datos.get(0));
                    double tasacambio = Double.parseDouble(datos.get(1));
                    request.setAttribute("tasacambio", tasacambio);
                    request.setAttribute("sencilloAnterior", santerior);
                    pagina = "/Ventas/inicioTurno.jsp";
                    break;

                case 10:

                    listaProducto = dProducto.ListaProductos();
                    Gson gson = new Gson();
                    String jsonOutput = gson.toJson(dProducto.ListaProductos());



                    ArrayList<BOCuarto> listacuartos1 = new ArrayList<BOCuarto>();
                    ArrayList<BOCuarto> listacuartos2 = new ArrayList<BOCuarto>();

                    listacuartos1 = dCuarto.ListarCuartos();

                    for (BOCuarto bcuartoo : listacuartos1) {
                        if (bcuartoo.getEstado().equalsIgnoreCase("Ocupado")) {
                            listacuartos2.add(bcuartoo);
                        }

                    }


                    request.setAttribute("listacuartos", listacuartos2);
                    request.setAttribute("nroproductos", Integer.toString(dProducto.contar_id()));
                    request.setAttribute("jsonproducto", jsonOutput);
                    request.setAttribute("listaproductos", listaProducto);
                    pagina = "/Ventas/Menu/Productos/ventasLibres.jsp";
                    break;

                case 11:

                    pagina = "/Ventas/Menu/Incidencias/Incidencias.jsp";
                    break;

                case 12:

                    listaEmpleado = null;
                    //listaEmpleado = dEmpleado.ListarEmpleados();
                    listaInsumo = dInsumo.ListaInsumos();
                    //request.setAttribute("listaEmpleado", listaEmpleado);
                    request.setAttribute("listaInsumo", listaInsumo);
                    Gson gson3 = new Gson();
                    String jsonOutput3 = gson3.toJson(dInsumo.ListaInsumos());

                    request.setAttribute("nroproductos", Integer.toString(dInsumo.contar_id()));
                    request.setAttribute("jsonproducto", jsonOutput3);
                    pagina = "/Ventas/Menu/Insumos/Insumos.jsp";
                    break;

                case 13:

                    pagina = "/Ventas/Menu/Incidencias/incidenciasCuarto.jsp";
                    break;

                case 14:

                    listaInsumo = daoinsumo.ListaInsumos();
                    listaProducto = dProducto.ListaProductos();
                    Gson gson1 = new Gson();
                    Gson gso = new Gson();
                    double efectivo14 = dregistro.SeleccionarEfectivo();
                    String jsonOutput1 = gson1.toJson(dProducto.ListaProductos());
                    String jsonOutpu = gso.toJson(daoinsumo.ListaInsumos());
                    request.setAttribute("nroproductos", Integer.toString(dProducto.contar_id()));
                    request.setAttribute("nroinsumos", Integer.toString(daoinsumo.contar_id()));
                    request.setAttribute("jsonproducto", jsonOutput1);
                    request.setAttribute("jsoninsumo", jsonOutpu);
                    request.setAttribute("listaProducto", listaProducto);
                    request.setAttribute("listaInsumo", listaInsumo);
                    request.setAttribute("efectivo", efectivo14);
                    pagina = "/Ventas/Menu/Gastos/comprasProductos.jsp";
                    break;

                case 15:

                    pagina = "/PopUps/estacionamiento.jsp";
                    break;

                case 16:

                    pagina = "/PopUps/nuevoProducto.jsp";
                    break;

                case 17:// Se redirecciona a el menu principal.

                    listaProducto = null;
                    listaProducto = dProducto.ListaProductos();

                    int numcuarto1 = Integer.parseInt(request.getParameter("listcuarto"));

                    int idpro = Integer.parseInt(request.getParameter("productoslis"));
                    int stockau = Integer.parseInt(request.getParameter("unidades"));
                    double precioun = Double.parseDouble(request.getParameter("precioUn"));
//                    bproducto = daoproducto.BuscarProducto(idpro);



                    for (BOProducto bprod : listaProducto) {
                        if (bprod.getIdProducto() == idpro) {
                            dProducto.ActualizarStock(idpro, bprod.getStock() - stockau);

                            //0 significa no pagado, 1 significa pagado;




                            dregistro.RegistrarVentaProd1(numcuarto1, idpro, bSesion.getIdSesion(), bSesion.getEmpleado_DNI(), stockau * precioun, stockau, 1);


                            double efect = dregistro.SeleccionarEfectivo();
                            //dregistro.RegistrarVentaProd4(stockau * bprod.getPrecio()+efect, maxid);

                            dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), stockau * precioun + efect, "Se registro la venta de producto", 0, bSesion.getTasacambio(), 0);

                        }
                    }






                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";
                    break;

                case 18:// Se redirecciona a el menu principal.

                    listaInsumo = null;
                    listaInsumo = dInsumo.ListaInsumos();
                    int idins = Integer.parseInt(request.getParameter("itemLav"));
                    int stockinsu = Integer.parseInt(request.getParameter("unidades"));
                    //int idemp = Integer.parseInt(request.getParameter("empleado"));
                    //se setea el empleado manualkmente
                    int idemp = 80499750;

//                    bproducto = daoproducto.BuscarProducto(idpro);

                    for (BOInsumo binsumo : listaInsumo) {
                        if (binsumo.getIdInsumo() == idins) {
                            dInsumo.actualizarInsumo(idins, binsumo.getStock() - stockinsu);

                            int tmp18 = dregistro.SeleccionarMaxIdEntregaInsumo(idins);

                            if (tmp18 > 0) {
                                dregistro.ActualizarHoraTemp(tmp18);
                            }
                            dregistro.RegistrarEntregaInsumo1(idins, bSesion.getIdSesion(), bSesion.getEmpleado_DNI(), idemp, stockinsu);

                        }
                    }

                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();

                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 19:

                    int idproducto19 = Integer.parseInt(request.getParameter("productoslis2"));
                    int cant = Integer.parseInt(request.getParameter("unidades"));
                    double costo = Double.parseDouble(request.getParameter("costoTo"));

                    for (BOProducto prod : dProducto.ListaProductos()) {

                        if (idproducto19 == prod.getIdProducto()) {

                            dProducto.ActualizarStock(prod.getIdProducto(), prod.getStock() + cant);
                            BORepComprasProducto recp = new BORepComprasProducto();
                            recp.setCantComprada(cant);
                            recp.setCostoTotal(costo);
                            recp.setEmpleado_DNI(bEmpleado.getDNI());
                            recp.setProducto_idProducto(prod.getIdProducto());
                            dregistro.RegistrarComprasProductos(recp, bSesion.getIdSesion(), bSesion.getEmpleado_DNI());
                            double efect19 = dregistro.SeleccionarEfectivo();
                            dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect19 - costo, "Se realizo una compra de producto", 0, bSesion.getTasacambio(), 0);

                        }

                    }




                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();
                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 2:


                    listaProducto = null;
                    listaProducto = dProducto.ListaProductos();
                    listaInsumo = null;
                    listaInsumo = daoinsumo.ListaInsumos();
                    double cajachica2 = Double.valueOf(request.getParameter("sencillo"));
                    double tasacambio2 = Double.valueOf(request.getParameter("tasacambio"));
                    dSesion.cambiartasacambio(tasacambio2);
                    bSesion.setTasacambio(tasacambio2);

                    dtransacciones.RegistrarSencillon("No se modifico la Caja", dtransacciones.ExtraerSencilloDejado(), cajachica2, cajachica2, bSesion.getIdSesion(), 0, tasacambio2, 0);

                    request.setAttribute("listaProducto", listaProducto);
                    request.setAttribute("listaInsumo", listaInsumo);

                    //request.setAttribute("sencilloAnterior", dtransacciones.ExtraerSencillo()); 
                    pagina = "/Ventas/inicioInventario.jsp";
                    break;

                case 20:

                    int numcuarto = Integer.parseInt(request.getParameter("cuarto"));
                    int idhab = dCuarto.ExtraerId(numcuarto);
                    dCuarto.EstablecerSalidaCliente(idhab);
                    dCuarto.ActualizarEstacionamiento(numcuarto, 0);

                    dCuarto.ActualizarEstado(numcuarto, "Sucio");
                    
                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;

                case 21:
                    String comentario1 = new String(request.getParameter("comentarios").getBytes("ISO-8859-1"), "UTF-8");
                    String nivel = String.valueOf(request.getParameter("radio"));

                    dregistro.RegistrarIncidencias(nivel, comentario1);
                    bIncidencias = dregistro.DetallesIncidencia();
                    m.enviarIncidencia(bIncidencias, bEmpleado.getNombre() + " " + bEmpleado.getApellido());


                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();

                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 22://Ingresar al Mapa de Cuartos

                    int idcuarto2 = Integer.parseInt(request.getParameter("cuarto"));
                    int DNI2 = Integer.parseInt(request.getParameter("empleado2"));
                    int jabon = Integer.parseInt(request.getParameter("jabon"));
                    int papel = Integer.parseInt(request.getParameter("papel"));

                    listaInsumo = null;

                    listaInsumo = dInsumo.ListaInsumos();
                    for (BOInsumo temp : listaInsumo) {
                        if (temp.getIdInsumo() == 1) {
                            dInsumo.actualizarInsumo(temp.getIdInsumo(), temp.getStock() - jabon);
                        }
                        if (temp.getIdInsumo() == 2) {
                            dInsumo.actualizarInsumo(temp.getIdInsumo(), temp.getStock() - papel);
                        }
                    }



                    dCuarto.ActualizarEstado(idcuarto2, "Limpiando");
                    dregistro.RegistrarLimipieza1(idcuarto2, bSesion.getIdSesion(), DNI2, bSesion.getEmpleado_DNI());
                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;

                case 23://Ingresar al Mapa de Cuartos

                    int idcuarto5 = Integer.parseInt(request.getParameter("cuarto"));
                    dCuarto.ActualizarEstado(idcuarto5, "Disponible");
                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;

                case 24:

                    int idcuarto3 = Integer.parseInt(request.getParameter("cuarto"));
                    int Rating24 = Integer.parseInt(request.getParameter("clasificacion"));
                    String Coment24 = new String(request.getParameter("comentarios").getBytes("ISO-8859-1"), "UTF-8").trim().replace("\r\n", ", ");

                    dCuarto.ActualizarEstado(idcuarto3, "Disponible");
                    int idmaxl3 = dregistro.RegistrarLimipieza2(idcuarto3);
                    int idhabmax3 = dCuarto.ExtraerId(idcuarto3);
                    bCliente = dCuarto.ExtraerClienteDeCuarto(idhabmax3);

                    dCliente.CalificarCliente(bCliente.getDNI(), Coment24, Rating24);

                    dregistro.RegistrarLimipieza4(idmaxl3);
                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;

                case 25:
                    String nombre25 = new String(request.getParameter("nombre").getBytes("ISO-8859-1"), "UTF-8");
                    int stock = Integer.parseInt(request.getParameter("unidades"));
                    double costo25 = Double.parseDouble(request.getParameter("costoTo"));
                    daoinsumo.RegistrarInsumo(nombre25, stock);



                    BORepComprasInsumo rcp23 = new BORepComprasInsumo();
                    rcp23.setCantComprada(stock);
                    rcp23.setCostoTotal(costo25);
                    rcp23.setEmpleado_DNI(bSesion.getEmpleado_DNI());
                    rcp23.setInsumo_idInsumo(daoinsumo.maximo_id());


                    dregistro.RegistrarComprasInsumo(rcp23, bSesion.getIdSesion(), bSesion.getEmpleado_DNI());

                    double efect25 = dregistro.SeleccionarEfectivo();
                    dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect25 - costo25, "Se realizo una compra de producto o insumo", 0, bSesion.getTasacambio(), 0);



                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 26:

                    listaInsumo = daoinsumo.ListaInsumos();
                    Gson gso4 = new Gson();
                    String jsonOutpu4 = gso4.toJson(daoinsumo.ListaInsumos());
                    System.out.println(jsonOutpu4);
                    request.setAttribute("nroinsumos", Integer.toString(daoinsumo.contar_id()));
                    request.setAttribute("jsoninsumo", jsonOutpu4);
                    request.setAttribute("listaInsumo", listaInsumo);

                    pagina = "/Ventas/Menu/Gastos/comprasInsumos.jsp";
                    break;

                case 27:

                    int idInsumos27 = Integer.parseInt(request.getParameter("insumoslis2"));
                    int cant2 = Integer.parseInt(request.getParameter("unidades"));
                    double costo2 = Double.parseDouble(request.getParameter("costoTo"));

                    for (BOInsumo ins : daoinsumo.ListaInsumos()) {

                        if (idInsumos27 == ins.getIdInsumo()) {

                            daoinsumo.actualizarInsumo(ins.getIdInsumo(), ins.getStock() + cant2);
                            BORepComprasInsumo recp = new BORepComprasInsumo();
                            recp.setCantComprada(cant2);
                            recp.setCostoTotal(costo2);
                            recp.setEmpleado_DNI(bEmpleado.getDNI());
                            recp.setInsumo_idInsumo(ins.getIdInsumo());
                            dregistro.RegistrarComprasInsumo(recp, bSesion.getIdSesion(), bSesion.getEmpleado_DNI());


                        }



                    }


                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();

                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 28: // Caso en el cual se regresará a la ventana de inicio de la aplicación.

                    double monto38 = Double.parseDouble(request.getParameter("monto"));
                    String comentario38 = new String(request.getParameter("comentarios").getBytes("ISO-8859-1"), "UTF-8");
                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();
                    double sencilloAnteriorActualizado88 = Double.parseDouble(datos.get(0));
                    double sencilloAnterior88 = dtransacciones.ExtraerSencilloDejado();
                    dtransacciones.RegistrarTransaccion1(sencilloAnterior88, bSesion.getIdSesion(), sencilloAnteriorActualizado88 - monto38, comentario38, 0, bSesion.getTasacambio(), 0);
                    dregistro.RegistrarGastosOtros(bSesion, comentario38, monto38);

                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();

                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 29:
                    listaProducto = null;
                    listaProducto = dProducto.ListaProductos();
                    listaInsumo = null;
                    listaInsumo = daoinsumo.ListaInsumos();
                    request.setAttribute("listaProducto", listaProducto);
                    request.setAttribute("listaInsumo", listaInsumo);

                    //request.setAttribute("sencilloAnterior", dtransacciones.ExtraerSencillo()); 
                    pagina = "/Ventas/finInventario.jsp";
                    break;

                case 3:


                    String[] productos = request.getParameterValues("stockproducto");
                    String[] productosid = request.getParameterValues("idproducto");
                    String[] insumos = request.getParameterValues("stockinsumos");
                    String[] insumosid = request.getParameterValues("insumoid");

                    listaProducto = null;
                    listaProducto = dProducto.ListaProductos();
                    listaInsumo = null;
                    listaInsumo = dInsumo.ListaInsumos();

                    if (listaProducto.size() != 0) {
                        for (int i = 0; i < productos.length; i++) {

                            if (listaProducto.get(i).getStock() != Integer.parseInt(productos[i])) {
                                String tmp3 = listaProducto.get(i).getNombre() + ", Stock Anterior:" + listaProducto.get(i).getStock() + " ,Stock final:" + Integer.parseInt(productos[i]);
                                deventos.RegistrarEvento(bSesion.getIdSesion(), tmp3);
                                dProducto.ActualizarStock(Integer.parseInt(productosid[i]), Integer.parseInt(productos[i]));
                            }
                        }
                    }
                    if (listaInsumo.size() != 0) {
                        for (int i = 0; i < insumos.length; i++) {

                            if (listaInsumo.get(i).getStock() != Integer.parseInt(insumos[i])) {
                                String tmp3 = listaInsumo.get(i).getNombre() + ", Stock Anterior:" + listaInsumo.get(i).getStock() + " ,Stock final:" + Integer.parseInt(insumos[i]);
                                deventos.RegistrarEvento(bSesion.getIdSesion(), tmp3);

                                daoinsumo.actualizarInsumo(Integer.parseInt(insumosid[i]), Integer.parseInt(insumos[i]));
                            }
                        }
                    }




                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";
                    break;

                case 38:

                    int idProd31 = Integer.parseInt(request.getParameter("idProd"));
                    double precio31 = Double.parseDouble(request.getParameter("precio"));
                    int cant31 = Integer.parseInt(request.getParameter("cant"));
                    int alq38 = Integer.parseInt(request.getParameter("alq"));


                    for (BOProducto prod : dProducto.ListaProductos()) {

                        if (idProd31 == prod.getIdProducto()) {

                            dProducto.ActualizarStock(prod.getIdProducto(), prod.getStock() + cant31);

                            double efect19 = dregistro.SeleccionarEfectivo();
                            dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect19 - precio31, "Se elimino la venta de un producto", 0, bSesion.getTasacambio(), 0);

                            deventos.RegistrarEvento(bSesion.getIdSesion(), "El usuario " + bSesion.getEmpleado_DNI() + " elimino una venta del prouducto " + prod.getNombre() + " con monto " + precio31);
                            dreporte.EliminarVentaProd(alq38);
                        }

                    }







                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();



                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 39:

                    tmpp3 = null;
                    tmpp3 = dregistro.ExtraerSesionesIncompletas(bSesion.getEmpleado_DNI(), bSesion.getIdSesion());

                    listaRepVentaXsesionHora = dreporte.ReporteVentaXSesionHora(bSesion.getIdSesion(), tmpp3);
                    
                    ArrayList<AlquilerHab> L39 = new ArrayList<AlquilerHab>();
                    L39 = dCuarto.ListarAlquileresXturno(bSesion.getIdSesion(), tmpp3);
                    
                    request.setAttribute("listaRepVentaXsesionHora", listaRepVentaXsesionHora);
                    request.setAttribute("listaAlquilerHab", L39);
                    
                    pagina = "/Ventas/Menu/Productos/EliminarVenta.jsp";

                    break;
                    
                case 30:






                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();



                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";


                    break;

                case 31:


                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;

                case 32:



                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 33:

                    String[] productos33 = request.getParameterValues("stockproducto");
                    String[] productosid33 = request.getParameterValues("idproducto");
                    String[] insumos33 = request.getParameterValues("stockinsumos");
                    String[] insumosid33 = request.getParameterValues("insumoid");





                    listaProducto = null;
                    listaProducto = dProducto.ListaProductos();

                    listaInsumo = null;
                    listaInsumo = dInsumo.ListaInsumos();


                    for (int j = 0; j < productos33.length; j++) {

                        if (listaProducto.get(j).getStock() != Integer.parseInt(productos33[j])) {
                            String tmp3 = listaProducto.get(j).getNombre() + ", Stock Anterior:" + listaProducto.get(j).getStock() + " ,Stock final:" + Integer.parseInt(productos33[j]);
                            deventos.RegistrarEvento(bSesion.getIdSesion(), tmp3);
                            dProducto.ActualizarStock(Integer.parseInt(productosid33[j]), Integer.parseInt(productos33[j]));
                        }


                    }
                    for (int j = 0; j < insumosid33.length; j++) {

                        if (listaInsumo.get(j).getStock() != Integer.parseInt(insumos33[j])) {
                            String tmp3 = listaInsumo.get(j).getNombre() + ", Stock Anterior:" + listaInsumo.get(j).getStock() + " ,Stock final:" + Integer.parseInt(insumos33[j]);
                            deventos.RegistrarEvento(bSesion.getIdSesion(), tmp3);

                            daoinsumo.actualizarInsumo(Integer.parseInt(insumosid33[j]), Integer.parseInt(insumos33[j]));
                        }
                    }




                    int id33 = bSesion.getIdSesion();
                    listatotalcuarto = null;
                    System.out.println("entro a lista total cuarto");
                    ArrayList<Integer> tmpp = new ArrayList<Integer>();
                    tmpp = dregistro.ExtraerSesionesIncompletas(bSesion.getEmpleado_DNI(), id33);
                    listatotalcuarto = dregistro.CierreCaja1(id33, tmpp);

                    System.out.println("salio de lista total cuarto");
                    double ventatotal33 = 0;
                    System.out.println("entro a lista ventas final turno");
                    double ventafinalturno = dProducto.VentasFinalTurno(bSesion.getIdSesion(), tmpp);
                    System.out.println("salio de lista ventas final turno");
                    for (BOTotalCuarto botc : listatotalcuarto) {
                        ventatotal33 = ventatotal33 + botc.getPrecio() * botc.getCantidad();
                    }

                    System.out.println("entro a lista costosproductos");
                    double totalGastoProducto = dProducto.CostosProducto(bSesion.getIdSesion(), tmpp);
                    System.out.println("salio a lista costosproductos");
                    System.out.println("entro a lista costosinsumos");
                    double totalGastoInsumo = daoinsumo.CostosInsumo(bSesion.getIdSesion(), tmpp);
                    System.out.println("salio a lista costosinsumos");
                    System.out.println("entro a lista CostosInfraestructura");
                    double totalGastosInfraestructura = dregistro.CostosInfraestructura(bSesion.getIdSesion(), tmpp);
                    System.out.println("salio a lista CostosInfraestructura");
                    
                    ArrayList<BOReingreso> L33 = new ArrayList<BOReingreso>();
                    L33 = dreporte.ExtraerReingreso(id33, tmpp);
                    double tmp33=0;
                    for(BOReingreso b33 : L33)
                    {
                        tmp33 = tmp33 + b33.getMonto();
                    }
                    


                    request.setAttribute("sencillo", dtransacciones.ExtraerSencilloDejado());
                    request.setAttribute("ventatotal33", ventatotal33);
                    request.setAttribute("listaTotalCuarto", listatotalcuarto);
                    request.setAttribute("VentaFinalTurno", ventafinalturno);
                    request.setAttribute("tasacambio", bSesion.getTasacambio());
                    request.setAttribute("totalGastoProducto", totalGastoProducto);
                    request.setAttribute("totalGastoInsumo", totalGastoInsumo);
                    request.setAttribute("reingreso", tmp33);
                    request.setAttribute("totalGastosInfraestructura", totalGastosInfraestructura);



                    pagina = "/Ventas/Menu/Cierre/cierre.jsp";
                    break;

                case 34:
                    String nombre34 = new String(request.getParameter("nombreproducto").getBytes("ISO-8859-1"), "UTF-8");
                    int stock34 = Integer.parseInt(request.getParameter("stockproductos"));
                    double precio34 = Double.parseDouble(request.getParameter("precioalcliente"));
                    double costo34 = Double.parseDouble(request.getParameter("costototal"));

                    dProducto.RegistrarProducto(nombre34, stock34, precio34);

                    BORepComprasProducto rcp34 = new BORepComprasProducto();
                    rcp34.setCantComprada(stock34);
                    rcp34.setCostoTotal(costo34);
                    rcp34.setEmpleado_DNI(bSesion.getEmpleado_DNI());
                    rcp34.setProducto_idProducto(dProducto.maximo_id());


                    dregistro.RegistrarComprasProductos(rcp34, bSesion.getIdSesion(), bSesion.getEmpleado_DNI());


                    double efect34 = dregistro.SeleccionarEfectivo();
                    dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect34 - costo34, "Se registro el nuervo insumo " + nombre34, 0, bSesion.getTasacambio(), 0);




                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 35:

                    int nombre35 = Integer.parseInt(request.getParameter("insumoslis2"));
                    int cant35 = Integer.parseInt(request.getParameter("unidades"));
                    double costo35 = Double.parseDouble(request.getParameter("costoTo"));

                    for (BOInsumo insumo : daoinsumo.ListaInsumos()) {

                        if (nombre35 == insumo.getIdInsumo()) {

                            daoinsumo.actualizarInsumo(insumo.getIdInsumo(), insumo.getStock() + cant35);
                            BORepComprasInsumo recp = new BORepComprasInsumo();
                            recp.setCantComprada(cant35);
                            recp.setCostoTotal(costo35);
                            recp.setEmpleado_DNI(bEmpleado.getDNI());
                            recp.setInsumo_idInsumo(insumo.getIdInsumo());
                            dregistro.RegistrarComprasInsumo(recp, bSesion.getIdSesion(), bSesion.getEmpleado_DNI());
                            double efect35 = dregistro.SeleccionarEfectivo();
                            dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect35 - costo35, "Se realizo una compra de insumo", 0, bSesion.getTasacambio(), 0);






                        }



                    }


                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 36: // Caso en el cual se regresará a la ventana de inicio de la aplicación.

                    double sencilloDejado = Double.parseDouble(request.getParameter("sencillo1"));
                    double bruto = Double.parseDouble(request.getParameter("bruto"));
                    double gastos = Double.parseDouble(request.getParameter("gastos"));
                    double neto = Double.parseDouble(request.getParameter("neto"));

                    //double soles = Double.parseDouble(request.getParameter("soles"));

                    double dolares36 = Double.parseDouble(request.getParameter("dolares"));
                    //double tarjeta36 = Double.parseDouble(request.getParameter("tarjeta"));
                    double tarjeta36 = 0;

                    double tipo = Double.parseDouble(request.getParameter("tasacambio"));
                    

                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();
                    double tasacambio36 = Double.parseDouble(datos.get(1));
                    double bruto36 = bruto - sencilloDejado;
                    double gastos36 = gastos;
                    double neto361 = neto - sencilloDejado;
                    double neto36 = 0;
                    if (dolares36 >= 0) {
                        neto36 = neto361 - dolares36 * tasacambio36;

                    }
                    System.out.println("llegoooo");
                    dSesion.cambiartasacambio(tipo);
                    bSesion.setTasacambio(tipo);

                    dCuarto.ResetVecesAlquilado();

                    dtransacciones.RegistrarTransaccion("Se dejo un sencillo", sencilloDejado, neto36, bSesion.getIdSesion(), dolares36, bSesion.getTasacambio(), tarjeta36);

                    dtransacciones.RegistrarGananciaTurno(bruto36, gastos36, neto361, bSesion.getIdSesion());


                    //ArrayList<Integer> sesiones = new ArrayList<Integer>();
                    //sesiones = dreporte.ExtraerSesionIncompleta();

                    //for (int i : sesiones)
                    //{

                    ArrayList<Integer> tmpp2 = new ArrayList<Integer>();
                    tmpp2 = dregistro.ExtraerSesionesIncompletas(bSesion.getEmpleado_DNI(), bSesion.getIdSesion());
                    System.out.println("llegoooo");
                    listaRepVentaXsesion = null;
                    listaRepVentaXsesion = dreporte.ReporteVentaXSesion(bSesion.getIdSesion(), tmpp2);
                    listarepcompraproducto = null;
                    listarepcompraproducto = dreporte.ReporteComprasProdXsesion(bSesion.getIdSesion(), tmpp2);
                    listarepgastosinfra = null;
                    listarepgastosinfra = dreporte.ReporteGastosInfraXsesion(bSesion.getIdSesion(), tmpp2);
                    listarepentregainsumo = null;
                    listarepentregainsumo = dreporte.ReporteEntregaInsumoXsesion(bSesion.getIdSesion(), tmpp2);
                    listarepcomprainsumo = null;
                    listarepcomprainsumo = dreporte.ReporteComprasInusmoXsesion(bSesion.getIdSesion(), tmpp2);
                    repcuartoxsesion = null;
                    repcuartoxsesion = dreporte.ReporteCuartosXSesion(bSesion.getIdSesion(), tmpp2);
                    repeventosxsesion = null;
                    repeventosxsesion = deventos.ListarEventos(bSesion.getIdSesion(), tmpp2);
                    listaProducto = null;
                    listaInsumo = null;
                    listaProducto = dProducto.ListaProductos();
                    listaInsumo = dInsumo.ListaInsumos();



                    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(Calendar.getInstance().getTime());



                    String tmp = "/home/ubuntu/demo/reportes/" + timeStamp + "_" + bSesion.getEmpleado_DNI();
                    String anio12 = timeStamp.substring(0, 4);
                    String mes12 = timeStamp.substring(4, 6);
                    String dia12 = timeStamp.substring(6, 8);
                    String hora12 = timeStamp.substring(9, 11);
                    String minutos12 = timeStamp.substring(11, 13);
                    String horaminutos12 = hora12+minutos12;
                    
                    //System.out.println("Directorio " + tmp);
                    tmp = "/home/ubuntu/demo/reportes/"+anio12+"/"+mes12+"/"+dia12+"/"+horaminutos12+"_"+bSesion.getEmpleado_DNI();
                    File dir = new File(tmp);
                    dir.mkdirs();
                    



                    dSesion.CerrarSesionBien();

                    System.out.println("Se inicia la generacion del archivo CSV");

                    ArrayList<String> listaAdjuntos = new ArrayList<String>();

                    System.out.println("llegoooo");
                    if (listaRepVentaXsesion.size() > 0) {
                        //gencsv.generateCsvFileListaVentaProdXsesion(tmp+"/RepVentaProd"+i+".csv", listaRepVentaXsesion);  
                        //listaAdjuntos.add(tmp+"/RepVentaProd"+i+".csv");
                        gencsv.generateCsvFileListaVentaProdXsesion(tmp + "/RepVentaProd.csv", listaRepVentaXsesion);
                        listaAdjuntos.add(tmp + "/RepVentaProd.csv");

                    }
                    if (listarepcompraproducto.size() > 0) {
                        //gencsv.generateCsvFileListaCompraProdXsesion(tmp+"/RepCompraProd"+i+".csv", listarepcompraproducto);
                        //listaAdjuntos.add(tmp+"/RepCompraProd"+i+".csv");
                        gencsv.generateCsvFileListaCompraProdXsesion(tmp + "/RepCompraProd.csv", listarepcompraproducto);
                        listaAdjuntos.add(tmp + "/RepCompraProd.csv");
                    }
                    if (listarepgastosinfra.size() > 0) {
                        //gencsv.generateCsvFileListaGastosInfraXsesion(tmp+"/RepGastosInfra"+i+".csv", listarepgastosinfra);
                        //listaAdjuntos.add(tmp+"/RepGastosInfra"+i+".csv");
                        gencsv.generateCsvFileListaGastosInfraXsesion(tmp + "/RepGastosInfra.csv", listarepgastosinfra);
                        listaAdjuntos.add(tmp + "/RepGastosInfra.csv");
                    }
                    if (listarepentregainsumo.size() > 0) {
                        //gencsv.generateCsvFileListaEntregaInsumoXsesion(tmp+"/RepEntregaInsumo"+i+".csv", listarepentregainsumo);
                        //listaAdjuntos.add(tmp+"/RepEntregaInsumo"+i+".csv");
                        gencsv.generateCsvFileListaEntregaInsumoXsesion(tmp + "/RepEntregaInsumo.csv", listarepentregainsumo);
                        listaAdjuntos.add(tmp + "/RepEntregaInsumo.csv");
                    }
                    if (listarepcomprainsumo.size() > 0) {
//                            gencsv.generateCsvFileListaCompraInsumoXsesion(tmp+"/RepCompraInsumo"+i+".csv", listarepcomprainsumo);
//                            listaAdjuntos.add(tmp+"/RepCompraInsumo"+i+".csv");
                        gencsv.generateCsvFileListaCompraInsumoXsesion(tmp + "/RepCompraInsumo.csv", listarepcomprainsumo);
                        listaAdjuntos.add(tmp + "/RepCompraInsumo.csv");
                    }
                    if (repcuartoxsesion.size() > 0) {
                        //gencsv.generateCsvFileListaCuartosXsesion(tmp+"/RepCuartos"+i+".csv", repcuartoxsesion);
                        //listaAdjuntos.add(tmp+"/RepCuartos"+i+".csv");
                        gencsv.generateCsvFileListaCuartosXsesion(tmp + "/RepCuartos.csv", repcuartoxsesion);
                        listaAdjuntos.add(tmp + "/RepCuartos.csv");
                    }
                    if (repeventosxsesion.size() > 0) {
                        //gencsv.generateCsvFileListaEventosXsesion(tmp+"/RepEventos"+i+".csv", repeventosxsesion);
                        //listaAdjuntos.add(tmp+"/RepEventos"+i+".csv");
                        gencsv.generateCsvFileListaEventosXsesion(tmp + "/RepEventos.csv", repeventosxsesion);
                        listaAdjuntos.add(tmp + "/RepEventos.csv");
                    }
                    if (listaProducto.size() > 0) {
                        //gencsv.generateCsvFileListaProductosStockXsesion(tmp+"/StockProductos"+i+".csv", listaProducto, bEmpleado.getNombre()+" "+bEmpleado.getApellido(), Integer.toString(bEmpleado.getDNI()));
                        //listaAdjuntos.add(tmp+"/StockProductos"+i+".csv");
                        gencsv.generateCsvFileListaProductosStockXsesion(tmp + "/StockProductos.csv", listaProducto, bEmpleado.getNombre() + " " + bEmpleado.getApellido(), Integer.toString(bEmpleado.getDNI()));
                        listaAdjuntos.add(tmp + "/StockProductos.csv");
                    }
                    if (listaInsumo.size() > 0) {
                        //gencsv.generateCsvFileListaInsumosStockXsesion(tmp+"/StockInsumos"+i+".csv", listaInsumo, bEmpleado.getNombre()+" "+bEmpleado.getApellido(), Integer.toString(bEmpleado.getDNI()));
                        //listaAdjuntos.add(tmp+"/StockInsumos"+i+".csv");
                        gencsv.generateCsvFileListaInsumosStockXsesion(tmp + "/StockInsumos.csv", listaInsumo, bEmpleado.getNombre() + " " + bEmpleado.getApellido(), Integer.toString(bEmpleado.getDNI()));
                        listaAdjuntos.add(tmp + "/StockInsumos.csv");
                    }

                    //gencsv.generateCsvFileGeneralXsesion(bruto36, gastos36, neto36, dolares36, sencilloDejado, tmp+"/RepGeneral"+i+".csv", bEmpleado, bSesion.getTasacambio());
                    //gencsv.generateCsvFileGeneralXsesionHTML(listaInsumo,listaProducto,bruto36, gastos36, neto36, dolares36, sencilloDejado, tmp+"/RepGeneral"+i+".html", bEmpleado, bSesion.getTasacambio());
                    gencsv.generateCsvFileGeneralXsesion(bruto36, gastos36, neto36, dolares36, sencilloDejado, tmp + "/RepGeneral.csv", bEmpleado, bSesion.getTasacambio());
                    gencsv.generateCsvFileGeneralXsesionHTML(listaInsumo, listaProducto, bruto36, gastos36, neto36, dolares36, sencilloDejado, tmp + "/RepGeneral.html", bEmpleado, bSesion.getTasacambio());

                    //listaAdjuntos.add(tmp+"/RepGeneral"+i+".csv");
                    listaAdjuntos.add(tmp + "/RepGeneral.csv");

                    System.out.println("Se finalizo la generacion dl archivo CSV");
                    System.out.println("inicia el envio de reportes");

                    for (String s : listaAdjuntos) {
                        System.out.println("A :" + s);
                    }

                    System.out.println("Comienza la impresion");
                    //m.printToPrinter(tmp + "/RepGeneral.html");
                    System.out.println("Finaliza la impresion");



                    m.EnviarReporte(bEmpleado.getNombre(), listaAdjuntos);
                    System.out.println("termina el envio de reportes");


                    System.out.println("entra a reenvio");
                    ReintentarEnvio();
                    System.out.println("termina el reenvio");


                    //mover archivo


                    System.out.println("termino todoooooo");

                    //}

                    pagina = "/index.jsp";
                    break;

                case 37: // Caso en el cual se ira a otros gastos




                    pagina = "/Ventas/Menu/Gastos/Otros.jsp";
                    break;

                case 44:
                    
                    int cuarto4 = Integer.parseInt(request.getParameter("cuarto"));
                    System.out.println(cuarto4);
                    int estacionamiento4 = Integer.parseInt(request.getParameter("estacioamiento"));
                    System.out.println(estacionamiento4);
                    dCuarto.ActualizarEstacionamiento(cuarto4, estacionamiento4);
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;
                    
                case 4://Ingresar al Mapa de Cuartos

                    
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;

                case 5://Alquilar un Cuarto Usuario Nuevo
                    bCliente = new BOCliente();

                    Gson gson2 = new Gson();
                    String jsonOutput2 = gson2.toJson(dCliente.ListarClientes());
                    int idcuarto = Integer.parseInt(request.getParameter("idcuarto"));


                    request.setAttribute("nroclientes", Integer.toString(dCliente.maximo_id()));
                    request.setAttribute("jsonclientes", jsonOutput2);

                    listacuartos = null;
                    listacuartos = dCuarto.ListarEstacionamiento();
                    
                    
                    ArrayList<Integer> list5 = new ArrayList<Integer>();
                    
                    
                    list5.add(1);
                    list5.add(2);
                    list5.add(3);
                    list5.add(4);
                    list5.add(5);
                    list5.add(6);
                    list5.add(7);
                    list5.add(8);
                    list5.add(9);
                    
                    
                    for(BOCuarto bcuarto : listacuartos)
                    {
                        if(bcuarto.getEstacionamiento() == 1)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 1)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 2)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 2)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 3)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 3)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 4)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 4)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 5)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 5)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 6)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 6)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 7)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 7)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 8)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 8)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 9)
                        {
                            for(int i5=0;i5<list5.size();i5++)
                            {
                                if(list5.get(i5) == 1)
                                {
                                    list5.remove(i5);
                                }
                            }
                        }
                        
                    }
                    
                    for(int i : list5)
                    {
                        System.out.println(i);
                    }
                    
                    
                    
                    request.setAttribute("bCliente", bCliente);
                    request.setAttribute("bCuarto", dCuarto.DetallesCuarto(idcuarto));
                    request.setAttribute("listaclientes", dCliente.ListarClientes());
                    request.setAttribute("listaestacionamiento", list5);
                    
                    
                    
                    pagina = "/Ventas/Menu/Clientes/clienteEntrada.jsp";
                    break;

                case 55://Registrar Cliente con Cuarto

                    String nombre55 = new String(request.getParameter("nombre").getBytes("ISO-8859-1"), "UTF-8");
                    int DNI = Integer.parseInt(request.getParameter("dnitext"));
                    double precio55 = Double.parseDouble(request.getParameter("precio"));
                    int cuarto55 = Integer.parseInt(request.getParameter("cuarto"));
                    int duracion = 12;
                    int esta55 = Integer.parseInt(request.getParameter("estacioamiento"));

                    
                    dCuarto.ActualizarEstacionamiento(cuarto55, esta55);
                    double efect20 = dregistro.SeleccionarEfectivo();
                    dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect20 + precio55, "Se registra la entrada del cliente", 0, bSesion.getTasacambio(), 0);


                    int i = 0;
                    bCliente = new BOCliente();
                    bCliente.setDNI(DNI);
                    bCliente.setNombre(nombre55);
                    listaclientes = dCliente.ListarClientes();
                    for (BOCliente bcliente : listaclientes) {
                        if (bcliente.getDNI() == DNI) {

                            i = 2;
                            dCliente.ActualizarDatos(DNI, nombre55);
                        }
                    }

                    if (i == 0) {
                        dCliente.RegistraCliente(bCliente);
                    }
                    alquilerHab = new AlquilerHab();
                    alquilerHab.setCliente_DNI(DNI);
                    alquilerHab.setSesion_Empleado_DNI(bEmpleado.getDNI());
                    alquilerHab.setCuarto_NroCuarto(cuarto55);
                    alquilerHab.setPrecio(precio55);
                    alquilerHab.setSesion_idSesion(bSesion.getIdSesion());
                    alquilerHab.setDurecion(duracion);
                    dCuarto.AlquilarHab(alquilerHab);
                    String nombretmp = nombre55;
                    if (nombre55.length() > 10) {
                        nombretmp = nombre55.substring(0, 10);
                    }
                    dCuarto.ActualizarCliente(alquilerHab.getCuarto_NroCuarto(), nombretmp);
                    dCuarto.ActualizarEstado(alquilerHab.getCuarto_NroCuarto(), "Ocupado");
                    dCuarto.ActualizarVecesAlquilado(alquilerHab.getCuarto_NroCuarto());


                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    

                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";

                    break;

                case 56:
                    String comentario56 = new String(request.getParameter("comentarios").getBytes("ISO-8859-1"), "UTF-8");
                    double cajaChica = Double.valueOf(request.getParameter("cajaMod"));
                    double tasacambio56 = Double.valueOf(request.getParameter("tasacambio"));

                    dSesion.cambiartasacambio(tasacambio56);
                    bSesion.setTasacambio(tasacambio56);

                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();

                    double cajachicatmp = Double.valueOf(datos.get(0));
                    double tasacambiotmp = Double.valueOf(datos.get(1));



                    if (cajaChica != cajachicatmp && tasacambiotmp == tasacambio56) {
                        deventos.RegistrarEvento(bSesion.getIdSesion(), comentario56 + " -- se modifico la caja chica de:" + cajachicatmp + " a:" + cajaChica);
                    }

                    if (cajaChica == cajachicatmp && tasacambiotmp != tasacambio56) {

                        deventos.RegistrarEvento(bSesion.getIdSesion(), comentario56 + " -- se modifico la tasa de cambio de:" + tasacambiotmp + " a:" + tasacambio56);

                    }
                    if (cajaChica == cajachicatmp && tasacambiotmp == tasacambio56) {
                    }
                    if (cajaChica != cajachicatmp && tasacambiotmp != tasacambio56) {
                        deventos.RegistrarEvento(bSesion.getIdSesion(), comentario56 + " -- se modifico la caja chica de:" + cajachicatmp + " a:" + cajaChica);
                        deventos.RegistrarEvento(bSesion.getIdSesion(), comentario56 + " -- se modifico la tasa de cambio de:" + tasacambiotmp + " a:" + tasacambio56);
                    }


                    dtransacciones.RegistrarTransaccion(comentario56, cajaChica, cajaChica, bSesion.getIdSesion(), 0, tasacambio56, 0);

                    listaProducto = null;
                    listaProducto = dProducto.ListaProductos();

                    listaInsumo = null;
                    listaInsumo = daoinsumo.ListaInsumos();
                    request.setAttribute("listaProducto", listaProducto);
                    request.setAttribute("listaInsumo", listaInsumo);

                    pagina = "/Ventas/inicioInventario.jsp";
                    break;


                case 6:


                    int cuarto2 = Integer.parseInt(request.getParameter("idcuarto"));

                    int idhabmax = dCuarto.ExtraerId(cuarto2);
                    String horainicio = dCuarto.extraerhoraingreso(idhabmax);



                    BOCliente bcliente1 = new BOCliente();
                    bcliente1 = dCuarto.ExtraerClienteDeCuarto(idhabmax);


                    listacuartos = null;
                    listacuartos = dCuarto.ListarEstacionamiento();
                    
                    
                    ArrayList<Integer> list6 = new ArrayList<Integer>();
                    
                    list6.add(0);
                    list6.add(1);
                    list6.add(2);
                    list6.add(3);
                    list6.add(4);
                    list6.add(5);
                    list6.add(6);
                    list6.add(7);
                    list6.add(8);
                    list6.add(9);
                    
                    
                    for(BOCuarto bcuarto : listacuartos)
                    {
                        if(bcuarto.getEstacionamiento() == 1)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 1)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 2)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 2)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 3)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 3)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 4)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 4)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 5)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 5)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 6)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 6)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 7)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 7)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 8)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 8)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }else if(bcuarto.getEstacionamiento() == 9)
                        {
                            for(int i5=0;i5<list6.size();i5++)
                            {
                                if(list6.get(i5) == 1)
                                {
                                    list6.remove(i5);
                                }
                            }
                        }
                        
                    }
                    
                    String esta6="";
                    int tmp2=0;
                    for (BOCuarto btmp6 : dCuarto.ListarEstacionamiento())
                    {
                        if(btmp6.getNumCuarto()==cuarto2)
                        {
                            tmp2=btmp6.getEstacionamiento();
                            if(btmp6.getEstacionamiento()==0){esta6="Sin Estacionamiento";}
                            if(btmp6.getEstacionamiento()==1){esta6="A1";}
                            if(btmp6.getEstacionamiento()==2){esta6="A2";}
                            if(btmp6.getEstacionamiento()==3){esta6="A3";}
                            if(btmp6.getEstacionamiento()==4){esta6="B1";}
                            if(btmp6.getEstacionamiento()==5){esta6="B2";}
                            if(btmp6.getEstacionamiento()==6){esta6="B3";}
                            if(btmp6.getEstacionamiento()==7){esta6="C1";}
                            if(btmp6.getEstacionamiento()==8){esta6="C2";}
                            if(btmp6.getEstacionamiento()==9){esta6="C3";}
                        }
                    }
                    
                    
                    request.setAttribute("listaestacionamiento", list6);
                    request.setAttribute("numcuarto", String.valueOf(cuarto2));
                    request.setAttribute("horaingreso", horainicio);
                    request.setAttribute("duracion", dCuarto.ExtraerDuracionDeAlquiler(idhabmax));
                    request.setAttribute("costoCuarto", dCuarto.ExtraerPrecioDeAlquiler(cuarto2));
                    request.setAttribute("esta", esta6);
                    request.setAttribute("tmp2", tmp2);


                    request.setAttribute("bCliente", bcliente1);



                    pagina = "/Ventas/Menu/Clientes/clienteSalida.jsp";
                    break;

                case 60:

                    double precio60 = Double.parseDouble(request.getParameter("precio"));
                    System.out.println("pagototal" + precio60);
                    int cuarto60 = Integer.parseInt(request.getParameter("cuarto"));
                    int idhab60 = dCuarto.ExtraerId(cuarto60);
                    dCuarto.AnularEntradaCliente(idhab60);

                    dCuarto.ActualizarEstado(cuarto60, "Disponible");
                    dCuarto.ActualizarEstacionamiento(cuarto60, 0);

                    String temp60 = "Se anulo la habitación: " + request.getParameter("cuarto");
                    deventos.RegistrarEvento(bSesion.getIdSesion(), temp60);
                    double efect60 = dregistro.SeleccionarEfectivo();
                    dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect60 - precio60, "Se registra la Anulacion de Alquiler de Cuarto", 0, bSesion.getTasacambio(), 0);

                    dCuarto.DisminuirVecesAlquilado(cuarto60);
   

                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;
                    
                case 61:

                    double precio61 = Double.parseDouble(request.getParameter("pago2"));
                    System.out.println("pago nuevo" + precio61);
                    int cuarto61 = Integer.parseInt(request.getParameter("cuarto"));
                    
                    String nombre61 = new String(request.getParameter("nombre").getBytes("ISO-8859-1"), "UTF-8");
                    int DNI61 = Integer.parseInt(request.getParameter("dni"));
                    int duracion61 = Integer.parseInt(request.getParameter("duracion"));
                    
                    alquilerHab = new AlquilerHab();
                    alquilerHab.setCliente_DNI(DNI61);
                    alquilerHab.setSesion_Empleado_DNI(bEmpleado.getDNI());
                    alquilerHab.setCuarto_NroCuarto(cuarto61);
                    alquilerHab.setPrecio(precio61);
                    alquilerHab.setSesion_idSesion(bSesion.getIdSesion());
                    alquilerHab.setDurecion(duracion61);
                    dCuarto.AlquilarHab(alquilerHab);
                    dCuarto.ActualizarVecesAlquilado(alquilerHab.getCuarto_NroCuarto());
                    String temp61 = "Se re-alquilo habitación: " + cuarto61;
                    deventos.RegistrarEvento(bSesion.getIdSesion(), temp61);
                    double efect61 = dregistro.SeleccionarEfectivo();
                    dtransacciones.RegistrarTransaccion1(dtransacciones.ExtraerSencilloDejado(), bSesion.getIdSesion(), efect61 + precio61, "Se registra el Re-Alquiler del Cuarto", 0, bSesion.getTasacambio(), 0);
  
                    request.setAttribute("listacuartos", dCuarto.ListarCuartos());
                    request.setAttribute("listaestacionamientos", dCuarto.ListarEstacionamiento());
                    
                    pagina = "/Ventas/Menu/Cuartos/mapaCuartos.jsp";
                    break;                

                case 7:

                    pagina = "/Ventas/Menu/Productos/ventasInternas.jsp";
                    break;

                case 8:

                    int cuarto3 = Integer.parseInt(request.getParameter("idcuarto"));


                    listaEmpleado = null;
                    listaEmpleado = dEmpleado.ListarEmpleados();

                    request.setAttribute("listaEmpleado", listaEmpleado);


                    request.setAttribute("numcuarto", String.valueOf(cuarto3));
                    pagina = "/Ventas/Menu/Limpieza/inicioLimpieza.jsp";
                    break;

                case 9://Finalizar la limpieza

                    int cuarto9 = Integer.parseInt(request.getParameter("idcuarto"));
                    int idhab9 = dCuarto.ExtraerId(cuarto9);
                    BOCliente cliente9 = dCuarto.ExtraerClienteDeCuarto(idhab9);
                    System.out.println("acaaaa debe estar todoooo" + cliente9.getComentario());
                    int idmax9 = dregistro.RegistrarLimipieza2(cuarto9);
                    String empleado9 = dregistro.RegistrarLimipieza3(idmax9);





                    request.setAttribute("numcuarto", String.valueOf(cuarto9));
                    request.setAttribute("empleado1", empleado9);
                    request.setAttribute("cliente", cliente9);

                    pagina = "/Ventas/Menu/Limpieza/finLimpieza.jsp";
                    break;

                case 70:
                    listaProducto = null;
                    listaProducto = dProducto.ListaProductos();
                    listaInsumo = null;
                    listaInsumo = daoinsumo.ListaInsumos();

                    request.setAttribute("listaProducto", listaProducto);
                    request.setAttribute("listaInsumo", listaInsumo);

                    //request.setAttribute("sencilloAnterior", dtransacciones.ExtraerSencillo()); 
                    pagina = "/Ventas/inicioInventario.jsp";
                    break;

                case 71:


                    listaEmpleado = dEmpleado.ListarEmpleados();

                    request.setAttribute("listaEmpleado", listaEmpleado);
                    pagina = "/Ventas/Menu/AdelantoSueldo.jsp";

                    break;

                case 72:

                    double monto72 = Double.parseDouble(request.getParameter("monto"));
                    int idemp72 = Integer.parseInt(request.getParameter("empleado"));

                    listaEmpleado = null;
                    listaEmpleado = dEmpleado.ListarEmpleadosSueldo();

                    for (BOEmpleado bemplado : listaEmpleado) {
                        if (bemplado.getDNI() == idemp72) {
                            dEmpleado.ActualizaSueldo(idemp72, bemplado.getSueldoFinal() - monto72);
                        }
                    }


                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();
                    double sencilloAnteriorActualizado72 = Double.parseDouble(datos.get(0));
                    double sencilloAnterior72 = dtransacciones.ExtraerSencilloDejado();
                    dtransacciones.RegistrarTransaccion1(sencilloAnterior72, bSesion.getIdSesion(), sencilloAnteriorActualizado72 - monto72, "El empleado " + bSesion.getEmpleado_DNI() + "adelanto de:" + monto72, 0, bSesion.getTasacambio(), 0);
                    String comentario72 = "El empleado " + dEmpleado.BuscarEmpleado(idemp72).getNombre() + " " + dEmpleado.BuscarEmpleado(idemp72).getApellido() + " adelanto de:" + monto72;
                    dregistro.RegistrarGastosOtros(bSesion, comentario72, monto72);
                    deventos.RegistrarEvento(bSesion.getIdSesion(), comentario72);



                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";


                    break;

                case 73:
                    listaEmpleado = dEmpleado.ListarEmpleadosSueldo();

                    listaGastos = dgastos.ListarGanancias();

                    request.setAttribute("listaEmpleado", listaEmpleado);
                    request.setAttribute("listaGastos", listaGastos);
                    pagina = "/Ventas/Menu/Gastos/ExtraerEfectivo.jsp";


                    break;

                case 74:

                    double monto74 = Double.parseDouble(request.getParameter("monto"));
                    int idtipo74 = Integer.parseInt(request.getParameter("tipopago"));
                    String comentario74 = new String(request.getParameter("comentarios").getBytes("ISO-8859-1"), "UTF-8");
                    if (idtipo74 == 1) {
                        bgasto = new BOGasto();
                        bgasto = dgastos.SeleccionarGasto(idtipo74);
                        dgastos.ActualizarGasto(bgasto.getTipo(), 0, idtipo74);

                        //donde se registrará la sacada de efectivo??????
                        deventos.RegistrarEvento(bSesion.getIdSesion(), comentario74 + " -- se extrajo dinero del efectivo (sobres)");
                        dgastos.EfectivoOtros(monto74, comentario74);

                    } else if (idtipo74 == 2) {
                        int idemp74 = Integer.parseInt(request.getParameter("empleado"));

                        listaEmpleado = null;
                        listaEmpleado = dEmpleado.ListarEmpleadosSueldo();

                        for (BOEmpleado bemplado : listaEmpleado) {
                            if (bemplado.getDNI() == idemp74) {
                                dEmpleado.ActualizaSueldo(idemp74, bemplado.getSueldoFinal() - monto74);
                            }
                        }
                    } else {
                        bgasto = new BOGasto();
                        bgasto = dgastos.SeleccionarGasto(idtipo74);
                        dgastos.ActualizarGasto(bgasto.getTipo(), monto74, idtipo74);
                        //donde se registrará la sacada de efectivo??????
                        deventos.RegistrarEvento(bSesion.getIdSesion(), comentario74 + " -- se extrajo dinero del efectivo (sobres)");

                    }



                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();

                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;

                case 75:
                    
                    
                    pagina = "/Ventas/Menu/IngresoDinero.jsp";
                    
                    break;
                
                case 76:
                    
                    double monto76 = Double.parseDouble(request.getParameter("monto"));
                    String comentario76 = new String(request.getParameter("comentarios").getBytes("ISO-8859-1"), "UTF-8");
                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();
                    double sencilloAnteriorActualizado76 = Double.parseDouble(datos.get(0));
                    double sencilloAnterior76 = dtransacciones.ExtraerSencilloDejado();
                    dtransacciones.RegistrarTransaccion1(sencilloAnterior76, bSesion.getIdSesion(), sencilloAnteriorActualizado76 + monto76, comentario76, 0, bSesion.getTasacambio(), 0);
                    deventos.RegistrarEvento(bSesion.getIdSesion(), "Se reingro dinero sobrante igual a "+monto76);
                    
                    dreporte.RegistrarReingresoDinero(bSesion.getIdSesion(), monto76);
                    
                    datos = null;
                    datos = dtransacciones.ExtraerSencilloActualizado();


                    request.setAttribute("efectivo", Double.parseDouble(datos.get(0)));
                    pagina = "/Ventas/Menu/menuRegistro.jsp";

                    break;
            }

            RequestDispatcher rd = getServletContext().getRequestDispatcher(pagina);
            rd.forward(request, response);

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public void ReintentarEnvio() {
        Mail m1 = new Mail();


        ArrayList<BOVerificacion> L = new ArrayList<BOVerificacion>();

        ArrayList<String> LS = new ArrayList<String>();

        L = m1.Verificacion();



        if (L.size() > 0) {

            for (BOVerificacion ss : L) {
                if (ss.getMail() == 0) {
                    System.out.println(ss.getRuta());
                    LS.add(ss.getRuta());
                }
            }


            if (LS.size() > 0) {

                DAOEmpleado demp = new DAOEmpleado();

                System.out.println("entro1");
                System.out.println(LS.size());

                int i = 0;
                while (i < LS.size()) {
                    System.out.println("entro2");
                    ArrayList<String> LSTmp = new ArrayList<String>();

                    int j = 0;
                    while (j < LS.size()) {
                        System.out.println("entro3");
                        System.out.println(LS.get(i).split("/")[4]);
                        System.out.println(LS.get(j).split("/")[4]);
                        if (LS.get(i).split("/")[4].equalsIgnoreCase(LS.get(j).split("/")[4])) {
                            System.out.println("entro10");
                            System.out.println(LS.get(i).split("/")[4]);
                            System.out.println(LS.get(j).split("/")[4]);
                            LSTmp.add(LS.get(j));
                        }
                        j++;
                    }

                    if (LSTmp.size() > 0) {
                        i = i + LSTmp.size();
                        System.out.println(LSTmp.size());

                        BOEmpleado bemppp = new BOEmpleado();
                        bemppp = demp.BuscarEmpleado(Integer.parseInt(LSTmp.get(0).split("_")[2].split("/")[0]));
                        System.out.println("entro a enviar");
                        System.out.println(bemppp.getNombre() + " " + bemppp.getApellido());
                        m1.EnviarReporte(bemppp.getNombre() + " " + bemppp.getApellido(), LSTmp);
                        System.out.println("salio de enviar");
                    }
                    if (LSTmp.size() == 0) {
                        i = i + 1;
                    }
                    System.out.println(i);
                    System.out.println(LS.size());
                }






            }



        }


    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
